package com.chenziwen.scala.chapter05;

/**
 * @ClassName TestJavaClass
 * @Description
 * @Author Administrator
 * @Date 2019/10/15 15:55
 * @Version 1.0
 **/
public class TestJavaClass {

    public static void main(String[] args) {

        OutClass outer1 = new OutClass();
        OutClass outer2 = new OutClass();
        // 创建外部类的成员内部类对象，成员内部类对象的创建依赖于外部类对象的实例
        OutClass.InnerClass inner1 = outer1.new InnerClass();
        OutClass.InnerClass inner2 = outer2.new InnerClass();

        // Java中的内部类从属于外部类，所以内部类对象可以互换使用
        inner1.test(inner2);
        inner2.test(inner1);

        // 创建外部类的静态内部类对象，静态内部类从属于外部类对象，所以无需外部类实例
        OutClass.StaticInnerClass staticInner = new OutClass.StaticInnerClass();
    }
}


class OutClass {

    class InnerClass {
        /**
         * 测试Java中内部类方法接收参数类型的问题
         *
         * @param inner
         */
        public void test(InnerClass inner) {
            System.out.println(inner);
        }
    }

    static class StaticInnerClass {

    }
}
